Dramatic increases in computer processing power and speed and in the speed and capacity of primary memory devices have been realized in recent years. Unfortunately, in contrast to processing and main memory technology advances, the rate of improvement in performance of secondary memory storage devices, primarily magnetic disks, has been modest. The substantial gains in performance and speed which continue to be realized for CPUs and main memory devices will be squandered if not matched by similar performance increases in secondary storage devices. For example, as the mismatch in performance of CPU and disk memory increases, disk I/O operations consume a greater proportion of CPU time.
Disk arrays have been proposed as a means to improve the performance of secondary storage devices, eliminating the expensive mismatch between CPU and secondary storage performance. A disk array, comprising a multiplicity of small, inexpensive disk drives connected in parallel, appears as a single large fast disk to the host system but offers improvements in performance, reliability, power consumption and scalability over a single large magnetic disk. In many applications disk arrays offer improvements in performance, reliability, power consumption and scalability over a single large magnetic disk.
Current disk array design alternatives are described in an article titled "A Case for Redundant Arrays of Inexpensive Disks (RAID)" by David A. Patterson, Garth Gibson and Randy H. Katz; University of California Report No. UCB/CSD 87/391, December 1987. The article describes five disk array arrangements, referred to as RAID levels. The simplest array, a RAID level 1 system, comprises one or more disks for storing data and an equal number of additional "mirror" disks for storing copies of the information written to the data disks. The remaining RAID levels store data in a interleaved manner across several data disks. One or more additional disks are utilized to store error check or parity information.
An additional disk array arrangement, referred to as parity striping, is presented in an article titled "Parity Striping of Disc Arrays: Low-Cost Reliable Storage with Acceptable Throughput" by Jim Gray, Bob Horst and Mark Walker; Tandem Computers, Inc., Tandem Technical Report No. 90.2, January 1990. In the parity striping system, only parity information is distributed across the disks, and the parity is mapped as large contiguous extents. Data is not divided among the disks but is stored in the conventional manner.
In order to coordinate the operation of the multitude of disk drives within an array to perform read and write functions, parity generation and checking, and data restoration and reconstruction, complex storage management techniques are required. In many of the disk array systems described in the prior art, the host operates as the RAID controller and performs the parity generation and checking and other storage management operations. Having the host perform these functions is expensive in host processing overhead.
In addition, most prior art systems include a fixed data path structure interconnecting the plurality of disk drives with the host system. Rearrangement of the disk array system to accommodate different quantities of disk drives or different RAID configurations is not easily accomplished.